#include "ScnsKeyboardGpio.c.h"

#if defined(SCNS_KEYBOARD_GPIO_ENABLE)&&SCNS_KEYBOARD_GPIO_ENABLE==1

#include "ScnsKey.h"
#if __SCNS_DEVICE_ID__==1

const ScnsKeyEnum scnsBspKeyboardGpioKeyEnum[SCNS_BSP_KEYBOARD_GPIO_KEY_MAX]={
    SCNS_KEY_R1,
    SCNS_KEY_R2,
    SCNS_KEY_RJS,
    SCNS_KEY_L1,
    SCNS_KEY_L2,
    SCNS_KEY_LJS,
};

static const PIN_enum ptx[SCNS_BSP_KEYBOARD_GPIO_KEY_MAX]={
    A6,D4,A3,C2,C3,A2,
};
#elif __SCNS_DEVICE_ID__==2
const ScnsKeyEnum scnsBspKeyboardGpioKeyEnum[SCNS_BSP_KEYBOARD_GPIO_KEY_MAX]={
    SCNS_KEY_R1,
    SCNS_KEY_R2,
    SCNS_KEY_RJS,
    SCNS_KEY_L1,
    SCNS_KEY_L2,
    SCNS_KEY_LJS,
};

static const PIN_enum ptx[SCNS_BSP_KEYBOARD_GPIO_KEY_MAX]={
//    A6,D4,A3,C2,C3,A2,
   D2,B9,C9,D3,B8,C8,
};
#else
#error
#endif

ScnsKeyPress scnsBspKeyboardGpioGet(uint8 keyN)
{
    return ((gpio_get(ptx[keyN])==0)?SCNS_KEY_PRESS_DOWN:SCNS_KEY_PRESS_UP);
}

ScnsStatus scnsBspKeyboardGpioInit(void)
{
    for(uint8 keyN=0;keyN<SCNS_BSP_KEYBOARD_GPIO_KEY_MAX;++keyN)
        gpio_init(ptx[keyN],GPI,0,GPI_PULL_UP);
    return SCNS_STATUS_OK;
}

ScnsStatus scnsBspKeyboardGpioPostInit(void)
{
    return SCNS_STATUS_OK;
}

#endif
